<?php

/**
 * 获取文件的后缀名
 * @param $filename
 * @return mixed
 */
function getExtension($filename){
    $myext = substr($filename, strrpos($filename, '.'));//搜索字符.的最后位置并且从当前位置向后截取
    return str_replace('.','',$myext); //替换.保留后缀部分
}

/**
 * 获取文件大小并转换成对应的字节数
 * 1KB 1MB...
 * @param $filename
 * @return string
 */
function formatSize($filename) {
    $size = filesize($filename);//得到的是文件大小byte为除以1024=kb
    $sizes = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
    if ($size == 0) {
        return('0KB');
    } else {
       //log(数值,低数)低数的多少此方=数值   1024^n=size  如果n
       //pow(2, 8) 2的八此方
        $i = floor(log($size, 1024));//判断是属于kb还是mb..
        $size=$size/pow(1024, $i);//得到大小
        return (round($size, 2) . $sizes[$i]);
    }
}

/**
 * 列取文件目录下的文件
 *opendir 打开一个目录句柄. 
 *readdir读句柄 判断是否目录
 * @param $DirPath
 */
function listDirFiles($DirPath){
    if($dir = opendir($DirPath)){
        while(($file = readdir($dir))!== false){
            if(!is_dir($DirPath.$file))
            {
                echo "filename: $file<br />";
            }
        }
    }
}

/**
 * 生成一个全目录文件,并写入内容
 * 
 * @param $con   写入的字符串
 * @param $filename 生成的文件全路径(全物理路径加文件名)
 */
function makefile($con,$filename){

    makdir($filename);
    $fp=fopen($filename,"w");
    fwrite($fp,$con);
    fclose($fp);
}

/**
 * 给定文件全路径生成目录
 * 判断路径+文件名是否是文件路径,采用递归判断目录存不存在,不存在就一层一层  mkdir创建(dirname() 返回路径中的目录部分)
 * 逻辑元素符补充:
 * or前面的语句为true后面则不执行,否则..
 * and 两个都必须执行
 * @param $filename
 */
function makdir($filename)
{
    is_dir($filename) or (makdir(dirname($filename)) and mkdir($filename,0777));
}


/**
 * fread读取文件内容
 * @param $filepath
 * @return string
 */
function ReadFiletext($filepath){
    $htmlfp=@fopen($filepath,"r");
    while($data=@fread($htmlfp,1000))
    {
        $string.=$data;
    }
    @fclose($htmlfp);
    return $string;
}


/**
 * 删除文件夹及文件夹下所有内容
 * @param $dirname
 * @return bool
 */
function rmallfile($dirname) {
    if (!file_exists($dirname)) { //文件或者目录不存在返回false
        return false;
    }
    if (is_file($dirname) || is_link($dirname)) { 
  //是文件或者是一个符号连接(linux软链接链接另一个文件,windows快捷文件),满足就删除
        return unlink($dirname);
    }
   //通过dir()函数创建一个Directory类对象$dir
	//$dir->read的功能和 readdir() 函数功能一样

    $dir = dir($dirname);//如果对像是目录

    while (false !== $file = $dir->read()) {

        if ($file == '.' || $file == '..') {
            continue;
        }
        if(!is_dir($dirname."/".$file)){//先判断是不是目录不是就删除
            unlink($dirname."/".$file);
        }else{
            Rmall($dirname."/".$file);//是目录就在循环，在判断一个一个的删除被外面的条件删除后回到这里执行下面的rmdir把目录删掉。
        }

        rmdir($dirname."/".$file);//这是删除目录的意思
    }

    $dir->close(); //释放目录句柄与 closedir() 函数功能一样

    rmdir($dirname);  //从后删掉头，最后把头删掉

    return true;
}

getExtension();//快速获取文件的扩展名即后缀名
formatSize();//格式化成可阅读的文件大小 1KB..
listDirFiles();//列取文件目录下的所有文件名
makefile()；//指定一个全路径文件,并写入内容(没有则递归创建目录)
makdir(); //创建给定全路径不存在的目录
ReadFiletext(); //读取文件内容
rmallfile();//删除文件夹及文件夹下所有内容
